// 王者周年庆模拟演奏脚本

function Vector2(_x, _y)
{
    this.x = _x;
    this.y = _y;
}

// 首先设置模拟演奏中左上角演奏点和右下角演奏点的坐标

// 左上角坐标
Pos1 = new Vector2(580, 640);

// 右下角坐标
Pos2 = new Vector2(1900, 980);

// 设置文件路径
FilePath = "/storage/emulated/0/乐谱/乐谱.txt";

// 保存各按键信息
Arr = new Array();
for (i = 0; i < 3; i++)
{
    Arr[i] = new Array();
    for (j = 0; j < 7; j++)
    {
        Arr[i][j] = new Vector2(Pos1.x + j * (Pos2.x - Pos1.x) / 6 , Pos1.y  + i * (Pos2.y  - Pos1.y ) / 2);
    }
}

// 将音符代码转换为点击的坐标
function CodeToPosition(_str)
{
    TempStrArr = _str.split('.');
    if (TempStrArr.length < 2)
    {
        return new Vector2(-1, -1);
    }
    return new Vector2(2 - parseInt(TempStrArr[1]), parseInt(TempStrArr[0]) - 1);
}

// 读取乐谱文件，并按照其中的乐谱进行演奏
if (files.isFile(FilePath))
{
    FileOp = open(FilePath, "r", encoding = "UTF-8");
    StrArr = FileOp.readlines();
    for (i = 0; i < StrArr.length; i++)
    {

        if (StrArr[i][0] == '#')
        {
            // toast(StrArr[i]);
            continue;
        }

        StrLineArr = StrArr[i].split(' ');
        if (StrLineArr.length < 2)
        {
            continue;
        }
        for (j = 1; j < StrLineArr.length; j++)
        {
            PosTemp = CodeToPosition(StrLineArr[j]);
            if (PosTemp.x >= 0 && PosTemp.y >= 0)
            {
                press(Arr[PosTemp.x][PosTemp.y].x, Arr[PosTemp.x][PosTemp.y].y, 1);
            }
        }
        // 延迟指定时间
        sleep(parseInt(StrLineArr[0]));
    }
}
else
{
    toast("未读取到乐谱，请检查乐谱文件路径。");
}